home *** CD-ROM | disk | FTP | other *** search
/ BMUG Revelations / BMUG Revelations.toast / Programming / Programming Languages / Yerk 3.64 / nuc / yerk.macro.txt next >
Text File  |  1993-05-12  |  5KB  |  294 lines

  1. gonext    macro
  2.     jmp    donext(PC)
  3.     endm
  4.  
  5. cfas    macro
  6.     data ]1-origin
  7.     do ]#>1
  8.     cfas ]2,]3,]4,]5,]6,]7,]8,]9
  9.     fin
  10.     endm
  11. *
  12. pushD0    MACRO
  13.     move.l    d0,-(sp)
  14.     ENDM
  15. *
  16. pushD1    MACRO
  17.     move.l    d1,-(sp)
  18.     ENDM
  19. *
  20. pushD2    MACRO
  21.     move.l    d2,-(sp)
  22.     ENDM
  23. *
  24. popD0    MACRO
  25.     move.l    (sp)+,d0
  26.     ENDM
  27. *
  28. popD1    MACRO
  29.     move.l    (sp)+,d1
  30.     ENDM
  31. popD2    MACRO
  32.     move.l    (sp)+,d2
  33.     ENDM
  34. *
  35. leA0    MACRO
  36.     lea    0(a3,d7.l),a0
  37.     ENDM
  38. *
  39. leA1    MACRO
  40.     lea    0(a3,d7.l),a1
  41.     ENDM
  42. *
  43. cmp2    MACRO
  44.     cmpm.l (sp)+,(sp)+
  45.     ENDM
  46. *
  47. mlit    MACRO
  48.     data lit-origin
  49.     data ]1
  50.     ENDM
  51. *
  52. ; The dcode macro will build a 'code' Forth word definition.
  53. ; It must be invoked with the following parameters:
  54. ;    ]1 = name field
  55. ;    ]2 = 'I' if immediate, other = non-immediate
  56. ;    ]3 = Label for the LINK field
  57. ;    ]4 = label for name field
  58. * want to pass label in list
  59. *
  60. dcode    MACRO
  61.     ADJST
  62.     DO ']2'='I'
  63. lk]4    DATA #:2-:1+$c0
  64.     ELSE
  65. lk]4    DATA #:2-:1+$80
  66.     FIN
  67. :1    ASC ']1'
  68. :2
  69.     ADJST
  70.     data lk]3-origin
  71. ]4    data *+4-origin
  72.     ENDM
  73. *
  74. ;     The dcol macro will build a 'high-level' FORTH word definition.
  75. ;     It must be inviked with the following parameters:
  76. ;    ]1 = name field
  77. ;    ]2 = 'I' if immediate, other = non-immediate
  78. ;    ]3 = Label for the LINK field
  79. ;    ]4 = current word label.
  80. ;
  81. dcol    macro
  82.     adjst
  83.     do ']2'='I'
  84. lk]4    DATA #:2-:1+$c0
  85.     ELSE
  86. lk]4    DATA #:2-:1+$80
  87.     FIN
  88. :1    ASC ']1'
  89. :2
  90.     ADJST
  91.     DATA lk]3-origin
  92. ]4    DATA colcode-origin
  93.     ENDM
  94. *
  95. scode    MACRO
  96.     DATA pscode-origin
  97.     ENDM
  98. *
  99. ; --------------------------------------
  100. ; The dval macro will create a mcfa VALUE def in the assembler.
  101. ; It must be invoked with the following parameters:
  102. ;    ]1 = length of name feild
  103. ;    ]2 = Label for the LINK field
  104. ;    ]3 = label for name field
  105. ;    ]4 = initial value
  106. *
  107. dval    MACRO
  108.     ADJST
  109. lk]3    DATA #:2-:1+$80
  110. :1     ASC    ']1'
  111. :2
  112.     ADJST
  113.     DATA    lk]2-origin        ; RFL link field
  114. ]3    DATA    dofetch-origin    ; 0th CFA points to fetch runtime code
  115. ]31    DATA    doincr-origin    ; 1st CFA points to incr    runtime code
  116. ]32    DATA    dostore-origin    ; 2nd CFA points to store runtime code
  117. ]39    DATA    ]4        ; store offset in PFA
  118.     ENDM
  119. ; -------------------------
  120. ; The ddoes macro will simulate a <BUILDS DOES> def
  121. ;    ]1 = name field
  122. ;    ]2 = 'I' for immediate    (not tested here)
  123. ;    ]3 = Label for the LINK field
  124. ;    ]4 = label for doescode
  125. ;    ]5 = addr of first high-level DOES> code
  126. ddoes    MACRO
  127.      ADJST
  128.     do ']2'='I'
  129. lk]4    DATA #:2-:1+$c0
  130.     ELSE
  131. lk]4    DATA #:2-:1+$80
  132.     FIN
  133. :1    ASC ']1'
  134. :2
  135.     ADJST
  136.     DATA    lk]3-origin        ; RFL link field
  137. ]4    DATA    doescode-origin    ; CFA points to DOES> runtime code
  138.     DATA    ]5-origin    ; addr of first high-level DOES> code
  139.     ENDM
  140. *
  141. if.    MACRO    ; use with if-then structure
  142.     DATA bran0-origin
  143. ]1    DATA ]19-]1
  144.     ENDM
  145. *
  146. then.    MACRO
  147. ]19
  148.     ENDM
  149. *
  150. eif.    MACRO
  151.     DATA bran0-origin
  152. ]1    DATA ]19-]1+4
  153.     ENDM
  154. *
  155. else.    MACRO
  156.      DATA    bran-origin
  157. ]19     DATA    ]191-]19
  158.     ENDM
  159. *
  160. ethen.    MACRO
  161. ]191
  162.     ENDM
  163. *
  164. do.    MACRO
  165.     DATA do_-origin
  166. ]1    DATA ]19-]1+4
  167.     ENDM
  168. *
  169. loop.    MACRO
  170.     DATA    loop_-origin
  171. ]19    DATA    ]1-]19+4
  172.     ENDM
  173. *
  174. ploop.    MACRO
  175.     DATA    ploop_-origin
  176. ]19    DATA    ]1-]19+4
  177.     ENDM
  178. *
  179. begin.    MACRO
  180. ]1
  181.     ENDM
  182. until.    MACRO
  183.     DATA    bran0-origin
  184. ]19    DATA ]1-]19
  185.     ENDM
  186. *
  187. again.    MACRO
  188.     DATA    bran-origin
  189. ]19    DATA ]1-]19
  190.     ENDM
  191. *
  192. repeat.    MACRO
  193.     DATA    bran-origin
  194. ]19    DATA    ]1-]19
  195.     ENDM
  196. *
  197. while.    MACRO
  198.     DATA    bran0-origin
  199. ]191    DATA    ]19-]191+4
  200.     ENDM
  201. *
  202. ; -----------------------------------------------------
  203. ;     The dcon MACRO will build a "constant" FORTH word definition
  204. ;    ]1 = name field
  205. ;    ]2 = Label to be used as    LINK    (last def's NFA label)
  206. ;    ]3 = label for code field
  207. ;    ]4 = long value to initialize pfa with
  208. ;
  209. dcon    MACRO    ; create a new constant
  210.      ADJST
  211. lk]3    DATA #:2-:1+$80
  212. :1    ASC ']1'
  213. :2
  214.     ADJST
  215.     DATA    lk]2-origin    ;    RFL link field
  216. ]3    DATA    concode-origin    ; CFA points to run code for CONSTANT
  217.     DATA    ]4-origin
  218.     ENDM
  219. *
  220. ; -------------------------------------------
  221. ; Define a variable
  222. dvar    MACRO    ; create a new variable
  223.      ADJST
  224. lk]3    DATA #:2-:1+$80
  225. :1    ASC ']1'
  226. :2
  227.     ADJST
  228.     DATA    lk]2-origin        ; RFL link field
  229. ]3    DATA    varcode-origin    ; CFA points to run code for VARIABLE
  230.     DATA    ]4-origin
  231.     ENDM
  232. *
  233. ; -----------------------------------------------------
  234. ;     The dvect MACRO will build a vector with three CFAS.
  235. ;    ]1 = length of name field
  236. ;    ]2 = Label to be used as    LINK    (last def's NFA label)
  237. ;    ]3 = label for code field
  238. ;    ]4 = initial value for pfa
  239. dvect    MACRO        ; create a new vector
  240.      ADJST
  241. lk]3    DATA #:2-:1+$80
  242. :1    ASC ']1'
  243. :2
  244.     ADJST
  245.     DATA    lk]2-origin    ; RFL link field
  246. ]3    DATA    doexec-origin    ; 0th CFA points to exec    code for vector
  247. ]31    DATA    dofetchv-origin    ; 1st CFA points to fetch code for vector
  248. ]32    DATA    dostore-origin    ; 2nd CFA points to store code for vector
  249.     DATA    ]4-origin
  250.     ENDM
  251. *
  252. ; -----------------------------------------------------
  253. ;     The dsvect MACRO will build a system vector
  254. ;    ]1 = name field
  255. ;    ]2 = Label to be used as    LINK    (last def's NFA label)
  256. ;    ]3 = label for code field
  257. ;    ]4 = offset into ...
  258. ;    ]5 = default vector contents
  259. dsvect    MACRO        ; create a new vector
  260.      ADJST
  261. lk]3    DATA #:2-:1+$80
  262. :1    ASC ']1'
  263. :2
  264.     ADJST
  265.     DATA    lk]2-origin        ; RFL link field
  266. ]3    DATA    dosexec-origin    ; 0th CFA points to run code for sys vector
  267. ]31    DATA    doputdef-origin    ; 1st CFA points to putdef code for sys vec
  268. ]32    DATA    doputsv-origin    ; 2nd CFA points to putsv code for sys vecto
  269.     DATA    ]4    ; offset into system vector table
  270.     DATA    ]5-origin    ; default vector contents
  271.     ENDM
  272. *
  273. DC.L    MACRO
  274.     DATA ]1
  275.     DO ]#>1
  276.     DC.L ]2,]3,]4,]5,]6,]7,]8,]9
  277.     FIN
  278.     ENDM
  279. *
  280. DC.W    MACRO
  281.     DATA /]1
  282.     DO ]#>1
  283.     DC.W ]2,]3,]4,]5,]6,]7,]8,]9
  284.     FIN
  285.     ENDM
  286. *
  287. DC.B    MACRO
  288.     DATA #]1
  289.     DO ]#>1
  290.     DC.B ]2,]3,]4,]5,]6,]7,]8,]9
  291.     FIN
  292.     ENDM
  293. *
  294.